Error-detecting codes are commonly implemented in digital networks and storage devices to ensure the integrity of digital data. Such codes can indicate accidental changes to raw data, as a result of channel noise or other errors in transmission or storage. In applications of data transmission, error-detecting codes are typically generated for a given data message and transmitted with the data message. When the data message arrives to its destination, the receiver can check the error-detecting code against an expected error code for the data message. If a mismatch occurs, the receiver can confirm an error in the received data message. In response, the data message can be retransmitted, or, in some cases, the data can be reconstructed using various error-correction techniques.
A cyclic redundancy check (CRC) is a common error-detecting code employed in digital communications. Under CRC error detection, a relatively short check value is calculated for—and attached to—each data message, where the check value is based on the remainder of a polynomial division of the message content. Upon receipt of the message, the calculation is repeated, and, if the check values do not match, an error can be identified for corrective action.